//给你一个正整数 days，表示员工可工作的总天数（从第 1 天开始）。另给你一个二维数组 meetings，长度为 n，其中 meetings[i] = [
//start_i, end_i] 表示第 i 次会议的开始和结束天数（包含首尾）。 
//
// 返回员工可工作且没有安排会议的天数。 
//
// 注意：会议时间可能会有重叠。 
//
// 
//
// 示例 1： 
//
// 
// 输入：days = 10, meetings = [[5,7],[1,3],[9,10]] 
// 
//
// 输出：2 
//
// 解释： 
//
// 第 4 天和第 8 天没有安排会议。 
//
// 示例 2： 
//
// 
// 输入：days = 5, meetings = [[2,4],[1,3]] 
// 
//
// 输出：1 
//
// 解释： 
//
// 第 5 天没有安排会议。 
//
// 示例 3： 
//
// 
// 输入：days = 6, meetings = [[1,6]] 
// 
//
// 输出：0 
//
// 解释： 
//
// 所有工作日都安排了会议。 
//
// 
//
// 提示： 
//
// 
// 1 <= days <= 10⁹ 
// 1 <= meetings.length <= 10⁵ 
// meetings[i].length == 2 
// 1 <= meetings[i][0] <= meetings[i][1] <= days 
// 
//
// Related Topics 数组 排序 👍 30 👎 0


package LeetCode.editor.cn;

import java.util.Arrays;

/**
 * @author ldltd
 * @date 2025-07-11 20:43:53
 * @description 3169.无需开会的工作日
 */
public class CountDaysWithoutMeetings{
	 public static void main(String[] args) {
	 	 //测试代码
	 	 CountDaysWithoutMeetings fun=new CountDaysWithoutMeetings();
	 	 Solution solution = fun.new Solution();
			solution.countDays(8,new int[][]{{3,4},{4,8},{2,5},{3,8}});
	 }
	 
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int countDays(int days, int[][] meetings) {
		Arrays.sort(meetings, (o1, o2) -> o1[0] - o2[0]);
		int ans = 0;
		int prevEnd = 0;

		for (int[] meeting : meetings) {
			if (meeting[0] > prevEnd) {
				ans += meeting[0] - prevEnd - 1;
			}
			prevEnd = Math.max(prevEnd, meeting[1]);
		}

		if (prevEnd < days) {
			ans += days - prevEnd;
		}

		return ans;
    }

}
//leetcode submit region end(Prohibit modification and deletion)

}
